home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / netz / ums / ums-beta / rexx / showgroups.rexx < prev    next >
OS/2 REXX Batch file  |  1994-12-21  |  3KB  |  127 lines

  1. /* ------------------------------------------------------------------------
  2.    :Program.    ShowGroups.rexx
  3.    :Contents.   shows all groups in UMS' messagebase
  4.    :Author.     Kai Bolay [kai]
  5.    :Address.    Snail Mail:              EMail:
  6.    :Address.    Hoffmannstraße 168       UUCP: kai@amokle.stgt.sub.org
  7.    :Address.    D-71229 Leonberg         FIDO: 2:2407/106.3
  8.    :History.    v1.0 [kai] 23-Sep-93
  9.    :History.    v1.2 [kai] 29-Sep-93 added MakeFlags()
  10.    :History.    v1.3 [hg]  16-Jan-94 improofed argument parsing,
  11.    :History.                         added option NoUpdate
  12.    :History.    v1.4 [hG]  23-Jan-94 uses UMSInit.rexx 1.1 and
  13.    :History.                         hgRexxSupport.library
  14.    :History.    v2.0 [kai] 21-Dec-94  adapted to UMS v11
  15.    :Version.    $VER: ShowGroups.rexx 1.4 (21.12.94)
  16.    :Copyright.  Public Domain
  17.    :Language.   ARexx
  18.    :Translator. RexxMast
  19. ------------------------------------------------------------------------ */
  20.  
  21. options results
  22.  
  23. RC = 0
  24.  
  25. signal on BREAK_C
  26. signal on BREAK_D
  27. signal on BREAK_E
  28. signal on BREAK_F
  29. signal on ERROR
  30. signal on HALT
  31. signal on IOERR
  32. signal on SYNTAX
  33.  
  34. /*** Init ***/
  35.  
  36. call addlib("rexxdossupport.library", 0, -30)
  37. call addlib("ums.library", 0, -210, 11)
  38. call UMSInitConsts()
  39.  
  40. /*** Arguments ***/
  41.  
  42. ProgramName = "ShowGroups";
  43. ArgsTemplate = "NAME,PASSWORD,SERVER/K";
  44. args.SERVER = ""
  45. args.PASSWORD = ""
  46.  
  47. parse arg arguments
  48. if strip(arguments) = '?' then do
  49.   call writech(STDOUT, ArgsTemplate || ': ')
  50.   arguments = readln(STDIN)
  51. end; else nop
  52. if ~ReadArgs(arguments,ArgsTemplate,"args.") then do
  53.   say Fault(RC, ProgramName)
  54.   exit 10
  55. end; else nop
  56.  
  57. /*** Login ***/
  58.  
  59. account = UMSLogin(args.name, args.password, args.server)
  60. if account = 0 then do
  61.   say "unable to login."
  62.   exit 10
  63. end
  64.  
  65. /*** Do the magic ***/
  66.  
  67. /* clear local flag 0 on all messages */
  68. res = UMSSelectFlags(account, "LOCAL", UMSMakeFlags(), UMSMakeFlags(0),,, "LOCAL", UMSMakeFlags(), UMSMakeFlags())
  69. say "you have" res "messages in your message base"
  70.  
  71. /* set local flag 0 on all readable messages */
  72. res = UMSSelectFlags(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(),,, "USER", UMSMakeFlags(UMSUSTAT_ReadAccess), UMSMakeFlags())
  73. say "you can't read" res "messages"
  74.  
  75. last = 0
  76. do forever
  77.   /* find next message with flag 0 set */
  78.   last = UMSSearchFlags(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(), last)
  79.   if last = 0 then leave
  80.   drop msg. /* _IMPORTANT_ */
  81.   if ~ UMSReadMsgField(account, last, msg., UMSCODE_Group, TRUE) then do
  82.     call CheckErr
  83.   end
  84.   if symbol("msg." || UMSCode_Group) ~= "VAR" then do
  85.     /* clear local flag 0 on all private messages */
  86.     res = UMSSelectField(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(),,, UMSCODE_Group, "", true)
  87.     say res "private messages"
  88.   end; else do
  89.     /* clear local flag 0 on all messages belonging to this group */
  90.     res = UMSSelectField(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(),,, UMSCODE_Group, msg.UMSCODE_Group, true)
  91.     say res "messages in" msg.UMSCode_Group
  92.   end
  93. end
  94.  
  95. /*** Final cleanup ***/
  96.  
  97. BREAK_C:
  98. BREAK_D:
  99. BREAK_E:
  100. BREAK_F:
  101. ERROR:
  102. HALT:
  103. IOERR:
  104. SYNTAX:
  105.  
  106. IF RC ~= 0 THEN DO
  107.   SAY "Error: " rc errortext(rc) "Line" sigl
  108. END
  109.  
  110. /*** Logout ***/
  111.  
  112. if account ~= 0 then do
  113.   call UMSLogout(account)
  114.   account = 0
  115. end
  116.  
  117. exit
  118.  
  119. /*** Support ***/
  120.  
  121. CheckErr: procedure expose account
  122.   err = UMSErrNum(account)
  123.   if err ~= 0 then do
  124.     say "UMS Error #" || err || ": " || UMSErrTxt(account)
  125.   end
  126. return
  127.